package 力扣题库;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

public class p102二叉树的层序遍历 {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> res=new ArrayList<>();

        if (root==null) {
            return res;
        }

        //只要二叉树不为空，就开始层序遍历
        Queue<TreeNode> queue=new LinkedList<>();
        queue.offer(root);

        while (!queue.isEmpty()) {
            int size=queue.size();//如何获取每一层顺序表，关键在于知道每一层元素的个数

            List<Integer> list=new ArrayList<>();//存放每一层元素的顺序表
            while (size!=0) {
                TreeNode top=queue.poll();//弹出对头元素
                list.add(top.val);//将队头元素 添加至 该层顺序表
                if (top.left!=null) {
                    queue.offer(top.left);
                }
                if (top.right!=null) {
                    queue.offer(top.right);
                }
                size--;
            }
            res.add(list);
        }

        return res;
    }
}
